//
//  HomeTableViewController.swift
//  weibo10
//
//  Created by 猎人 on 15/10/15.
//  Copyright © 2015年 hunter. All rights reserved.
//

import UIKit
import SVProgressHUD

/// 原创微博 Cell 的可重用标识符号
let StatusNormalCellId = "StatusNormalCellId"
/// 转发微博可重用 Cell 的可重用标识符号
let StatusRetweetedCellId = "StatusRetweetedCellId"

class HomeTableViewController: VisitorTableViewController {
    
    /// 微博数据列表模型
    private lazy var listViewModel = StatusListViewModel()
    
    override func viewDidLoad() {
        super.viewDidLoad()
        
        if !UserAccountViewModel.sharedUserAccount.userLogon {
            
            visitorView?.setupInfo(nil, title: "关注一些人，回这里看看有什么惊喜")
            return
        }
        
        prepareTableView()
        
        loadData()
    }
    
    /// 准备表格
    private func prepareTableView() {
        
        // 注册转发微博可重用 cell
        tableView.registerClass(StatusRetweetedCell.self, forCellReuseIdentifier: StatusRetweetedCellId)
        
        // 注册原创微博可重用Cell
        tableView.registerClass(StatusNormalCell.self, forCellReuseIdentifier: StatusNormalCellId)
        
        //取消分割线
        tableView.separatorStyle = .None
        
        //自动计算行高
        tableView.estimatedRowHeight = 400
        
    }
    
    /// 加载数据
    private func loadData() {
        
        listViewModel.loadStatus { (isSuccessed) -> () in
            if !isSuccessed {
                SVProgressHUD.showInfoWithStatus("加载数据错误，请稍后再试")
                return
            }
            
//            print(self.listViewModel.statusList)
        // 4. 刷新数据
            self.tableView.reloadData()
        }
    }
}
// MARK: - 数据源方法
extension HomeTableViewController {
    
    override func tableView(tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
        return listViewModel.statusList.count ?? 0
    }
    
    override func tableView(tableView: UITableView, cellForRowAtIndexPath indexPath: NSIndexPath) -> UITableViewCell {
        let vm = listViewModel.statusList[indexPath.row]
        
        let cell = tableView.dequeueReusableCellWithIdentifier(vm.cellID, forIndexPath: indexPath) as! StatusCell
        
        cell.viewModle = vm

        return cell
    }
    
    override func tableView(tableView: UITableView, heightForRowAtIndexPath indexPath: NSIndexPath) -> CGFloat {
        let vm = listViewModel.statusList[indexPath.row]
        
        return vm.rowHeight
    }
    
    override func tableView(tableView: UITableView, didSelectRowAtIndexPath indexPath: NSIndexPath) {
        print("选中了\(indexPath.row)")
    }
}

